#include <CtrlLib/CtrlLib.h>

using namespace Upp;

#include "Dialogs.h"

// Variables externas
extern Array<int> bajasAutomaticas;
extern Array<int> nroSocios;
bool cancel = false;

/**
 Ventana que muestra los afiliados que han sido dado de baja desde Córdoba.
*/
BajasAutomaticasDlg::BajasAutomaticasDlg()
{
	CtrlLayout(*this, "Bajas Automáticas");
	Icon(CentroJyPImg::icono_min32x32(),CentroJyPImg::icono());
	MaximizeBox().MinimizeBox();
	
	lista_afiliados.AddColumn(NRO_SOCIO_A,"Nro. Socio").NoEdit().Sorting();
	lista_afiliados.AddColumn(DNI_A,"Documento").NoEdit().Sorting();
	lista_afiliados.AddColumn(APELLIDOS_A,"Apellido/s y Nombres/s").NoEdit().Sorting();
/*	lista_afiliados.AddColumn(NOMBRES_A,"Nombre/s").NoEdit();*/
	lista_afiliados.Clear();
	
	for (int i = 0 ; i < bajasAutomaticas.GetCount() ; i++){
		SqlBool where = (NRO_SOCIO_A == bajasAutomaticas[i]);
		if (!(SQL * Select(NRO_SOCIO_A, DNI_A, APELLIDOS_A).From(AFILIADO).Where(where))) {
			Exclamation(SQL.GetLastError());
			return;
		}
		while (SQL.Fetch())
			lista_afiliados.Add(SQL[NRO_SOCIO_A], SQL[DNI_A], SQL[APELLIDOS_A]);
	}
	
	cant_af.SetText(AsString(nroSocios.GetCount()));
	cant_af_bajas.SetText(AsString(bajasAutomaticas.GetCount()));
	cant_af_totales.SetText(AsString(nroSocios.GetCount() - bajasAutomaticas.GetCount()));

	eliminar_btn <<= THISBACK(elimarAfiliadosAutom);
	cancelar_btn <<= THISBACK(cancelarEliminacion);
}

/**
 Elimina los afiliados de la base de datos.
*/
void BajasAutomaticasDlg::elimarAfiliadosAutom()
{
	if (lista_afiliados.IsCursor() && PromptYesNo("¿Está seguro que quiere eliminar este afiliado?")) {
		if (! (SQL * Delete(AFILIADO).Where(NRO_SOCIO_A == lista_afiliados.GetKey()))) {
			Exclamation(SQL.GetLastError());
			return;
		}
		lista_afiliados.RemoveSelection();
	}
}

/**
 Cancela la eliminacion automática de afiliados.
*/
void BajasAutomaticasDlg::cancelarEliminacion()
{
	Hide();
	Close();
}